<template>

  <button @click="clickAlert">这是点击触发alert</button>
  <button @click="say('hello')">Say hello</button>
  <button @click="say('bye')">Say bye</button>
  <!-- using inline arrow function -->
  <button @click="(event) => warn('Form cannot be submitted yet.', event)">Submit</button>

  <p>事件变化</p>
  <!-- 单击事件将停止传递 -->
  <a @click.stop="doThis">doThis</a>

  <!-- 提交事件将不再重新加载页面 -->
  <form @submit.prevent="onSubmit">onSubmit</form>

  <!-- 修饰语可以使用链式书写 -->
  <a @click.stop.prevent="doThat">doThat</a>

  <!-- 也可以只有修饰符 -->
  <form @submit.prevent>prevent</form>

  <!-- 仅当 event.target 是元素本身时才会触发事件处理器 -->
  <!-- 例如：事件处理器不来自子元素 -->
  <div @click.self="doThat">...</div>

  <!-- 添加事件监听器时，使用 `capture` 捕获模式 -->
  <!-- 例如：指向内部元素的事件，在被内部元素处理前，先被外部处理 -->
  <div @click.capture="doThis">...</div>

  <!-- 点击事件最多被触发一次 -->
  <a @click.once="doThis"></a>

  <!-- 滚动事件的默认行为 (scrolling) 将立即发生而非等待 `onScroll` 完成 -->
  <!-- 以防其中包含 `event.preventDefault()` -->
  <div @scroll.passive="onScroll">...</div>

  <!-- only call `submit` when the `key` is `Enter` -->
  <input @keyup.enter="submit" />

  <!-- Alt + Enter -->
  <input @keyup.alt.enter="clear" />

  <!-- 当按下 Ctrl 时，即使同时按下 Alt 或 Shift 也会触发 -->
  <button @click.ctrl="onClick">A</button>

  <!-- 仅当按下 Ctrl 且未按任何其他键时才会触发 -->
  <button @click.ctrl.exact="onCtrlClick">A</button>

  <!-- 仅当没有按下任何系统按键时触发 -->
  <button @click.exact="onClick">A</button>

  <!-- Ctrl + Click -->
  <div @click.ctrl="doSomething">Do something</div>
</template>

<script setup>
  function clickAlert(event){
    alert(event.target.tagName)
  }

  function say(word) {
    alert(word)
  }

  function warn(message, event) {
    // now we have access to the native event
    if (event) {
      event.preventDefault()
    }
    alert(message)
  }
</script>

<style scoped>

</style>